草庐IT

java - 实例变量的 setter 和 getter 的 Junit 测试

全部标签

ruby - 测试 block 是否通过 RSpec Mocks

我可以测试参数是否传递如下:RSpec.describedoitdoobj=doubleexpect(obj).toreceive(:method).with(1,2,3)obj.method(1,2,3)endend我应该如何处理block参数?我理想中的代码:RSpec.describedoitdoobj=doubleproc=Proc.new{}expect(obj).toreceive(:method).with(1,2,3).with_block(proc)obj.method(1,2,3,&proc)endend 最佳答案

Ruby 的 vcr 的 Java 替代品?

是否有Ruby'sVCR的java替代品??据我所知,使用VCR的好处是巨大的,您可以运行“集成测试”并记录结果,将它们存储在本地某个地方。现在,从下次需要运行测试时起,您可以使用第一次运行时记录的数据模拟实际数据库命中。Java世界中有类似的东西吗?如果没有,如果我尝试实现它可能会遇到什么样的瓶颈?VCR只记录HTTP交互,但是否可以采用这种方法来记录,比如对其他团队的API的任何类型的数据库操作/函数调用,我不需要测试,基本上这将使我免于模拟所以通过自动化来完成很多事情。Here是带有Ruby单元测试的VCR示例: 最佳答案 查

ruby - 对返回值的 ruby​​ 操作进行基准测试

基准测试获取一个block并返回时间:http://ruby-doc.org/stdlib-1.9.3/libdoc/benchmark/rdoc/Benchmark.htmlrequire'benchmark'putsBenchmark.measure{"a"*1_000_000}如果你想对一个操作进行基准测试并同时获得返回值和运行时间怎么办?或者,换句话说,闭包可以修改传递给它的对象吗? 最佳答案 闭包可以修改其范围内的对象,如下所示:require'benchmark'a=nilputsBenchmark.measure{a=

ruby - 为什么在初始化时不使用 setter 方法?

最近我一直在阅读“Ruby中的实用面向对象设计”,我注意到最佳实践之一是使用访问器方法而不是直接获取@instance_variable。例如:classFooattr_accessor:bardefinitialize(my_argument)@bar=my_argumentend#bad#deflorem_ipsum#@bar*999#end#gooddeflorem_ipsumbar*999endend让事情保持干燥是有意义的,并且,以防万一我需要在实际获取它的值之前以某种方式处理@bar。但是,我注意到initialize方法直接设置了@bar实例变量的值:classFooat

ruby - Ruby 进程之间的共享变量

我有一个Ruby程序可以加载两个非常大的yaml文件,因此我可以通过fork一些进程来利用多核来提高速度。我试过查看,但我无法弄清楚如何或是否可以在不同进程中共享变量。以下是我目前的代码:@proteins=""@decoyProteins=""forkdo@proteins=YAML.load_file(database)exitendforkdo@decoyProteins=YAML.load_file(database)exitendp@proteins["LVDK"]P由于fork而显示nil。那么是否可以让fork进程共享变量?如果是这样,怎么做到的?

ruby-on-rails - 开始对 Ruby Rails 网站进行单元和功能测试的最佳方法是什么?

我正在测试一个RubyRails网站,想开始进行单元和功能测试。 最佳答案 Cucumber和RSpec值得一看。他们鼓励在behaviour-driven中进行测试,基于示例的样式。RSpec是一个用于单元级测试的库:describe"hello_world"it"shouldsayhellototheworld"do#RSpeccomeswithitsownmock-objectframeworkbuiltin,#thoughitletsyouuseothersifyoupreferworld=mock("World",:pop

ruby: block 可以影响方法中的局部变量吗?

我只是在学习ruby​​并试图理解block中执行的代码的范围。例如,我希望能够创建一个block来影响它附加到的方法,如下所示:deftest(&block)block.call()ifblock_given?puts"intest,foois#{foo}"puts"intest,baris#{bar}"endtest(){foo="thisisfoo"bar="thisisbar"}在这种情况下,我根本不想修改block——我希望能够使用简单的变量引用而不使用参数来编写它。只有修改上面例子中的'test'方法,才能访问block中定义的变量吗?同样,目标是不修改block,但能够在

ruby 迷你测试 : Suite- or Class- level setup?

使用内置的RubyMinitest框架,有没有办法在整个套件运行之前运行一些代码,甚至在整个TestClass运行之前运行一次?我在thisquestion的答案中看到Test::Unit::after_tests可用于在运行所有测试后运行代码;是否有类似的方法在所有测试运行之前运行代码?我想使用此功能在测试运行前初始化测试数据库,并在测试全部运行后将其拆除。谢谢! 最佳答案 这是从MiniTest修改而来的docs(在可自定义的测试运行器类型下)。classBurgerdefinitializeputs"YOUCREATEDABU

ruby - 如何排除匹配特定标签的 RSpec 测试?

从命令行运行我的RSpec测试时,如何排除与特定标记匹配的测试? 最佳答案 在标签名称中使用~@,如下所示:rspecspec--tag~@slow查看文档:https://www.relishapp.com/rspec/rspec-core/docs/command-line/tag-option更新我现在正在Spork上运行我的测试,它似乎忽略了这个指令。不知道为什么。 关于ruby-如何排除匹配特定标签的RSpec测试?,我们在StackOverflow上找到一个类似的问题:

ruby - 在 Mixins 中初始化实例变量

是否有任何干净的方法来初始化旨在用作Mixin的模块中的实例变量?例如,我有以下内容:moduleExampledefon(...)@handlers||={}#dosomethingwith@handlersenddefall(...)@all_handlers||=[]#dosomethingwith@all_handlersenddefunhandled(...)@unhandled||=[]#dosomethingwithunhandledenddefdo_something(..)@handlers||={}@unhandled||=[]@all_handlers||=[]#